package edu.strategy;

import java.util.List;

import edu.commander.BehaviorCalculator;

import robocode.AdvancedRobot;


public abstract class Factory {
	private static Factory factoryStrategy = null;
	
	public abstract List<Strategy> getDefault();
	public abstract List<Strategy> getHitByBullet();
	public abstract List<Strategy> getHitRobot();
	public abstract List<Strategy> getHitWall();
	public abstract List<Strategy> getScanned();
	public abstract BehaviorCalculator getBehaviorCalculator();
	
	public abstract DataManager getDataManager();
	
	public static Factory getInstance (AdvancedRobot advancedRobot, BehaviorCalculator calculator){
		if (factoryStrategy == null){
			factoryStrategy = new FactorySingle(advancedRobot, calculator);
		}
		return factoryStrategy;
	}
	public static Factory getInstance(){
		return factoryStrategy;
	}
}
